package com.shangxian.giveithome.mapper;

import com.shangxian.giveithome.entity.report.BlackList;
import com.shangxian.giveithome.entity.report.Forbidden;
import com.shangxian.giveithome.entity.report.InputBlackList.Number;
import com.shangxian.giveithome.entity.report.InputBlackList.UserConditionParam;
import com.shangxian.giveithome.entity.report.outputParams.ResultBlackList;
import com.shangxian.giveithome.entity.report.outputParams.ResultList;
import com.shangxian.giveithome.entity.report.outputParams.ResultUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Administrator
 * 新举报模块持久层
 */
@Mapper
public interface NewReportMapper {


    /**
     * 根据用户名或者手机号查询举报记录
     * @param value
     * @return
     */
    int findBlackListByUserOrPhoneTotal(String value);

    /**
     * 根据用户名或者手机号查询举报记录
     * 分页查询
     * @param value
     * @param pageNumber
     * @param pageSize
     * @return
     */
    List<ResultList> findBlackListByUserOrPhone(String value, int pageNumber, int pageSize);

    /**
     * 提交举报
     * @param blackList
     * @return
     */
    int submitReport(BlackList blackList);

    /**
     * 审核黑名单被禁用的用户
     * @param id 黑名单id
     * @param id 完善后的手机号
     * @return
     */
    int dealBlockedReport(Long id);

    /**
     * 根据手机号封禁用户并添加到封禁表中
     * @param forbidden
     * @return
     */
    int blockedUser(Forbidden forbidden);

    /**
     * 后台审核正常用户，更新状态
     * @param id
     * @param phone
     * @return
     */
    int auditNormal(Long id, long phone);

    /**
     * 查询所有被封禁的用户
     * @return
     */
    int findAllBlockedUserTotal();

    /**
     * 查询用户是否被封禁
     * @param phone
     * @return
     */
    int IsBlock(long phone);

    /**
     * 根据用户手机号解禁用户 forbidden 禁用表
     * @param phone
     * @return
     */
    int dealUnblockUser(Long phone);

    /**
     * 根据手机号解禁用户 black_number 黑名单表
      * @param phone
     * @return
     */
    int dealBlackUnblockUser(Long phone);

    /**
     * 查询所有被禁用的用户 forbidden表
     * @param pageNumber
     * @param pageSize
     * @return
     */
    List<Forbidden> findAllBlockedUser(int pageNumber, int pageSize);

    /**
     * 根据状态查询黑名单记录信息 black_number 黑名单表
     * @param state
     * @return
     */
    int findBlackListHistoryTotal(Long state);

    /**
     * 根据状态查询黑名单记录信息列表
     * @param state
     * @param pageNumber
     * @param pageSize
     * @return
     */
    List<ResultBlackList> findBlackListHistory(Long state, int pageNumber, int pageSize);

    /**
     * 根据条件查询用户信息
     * @param condition
     * @param pageNumber
     * @param pageSize
     * @return
     */
    List<ResultUser> findAllUser(UserConditionParam condition, int pageNumber, int pageSize);

    /**
     * 根据条件查询用户数目
     * @param condition
     * @return
     */
    int findAllUserTotalByCondition(@Param("condition")UserConditionParam condition);

    /**
     * 是否已经存在封禁表中
     * @param phone
     * @return
     */
    int IsExistForbidden(Long phone);

    /**
     * 封禁用户（对于解封后再次封禁）
     * @param param
     * @return
     */
    int UBlockUser(Number param);

    /**
     * 解封后再次禁用（更新黑名单状态）
     * @param phone
     * @return
     */
    int UdealBlockedReport(Long phone);

    /**
     * 对于没有手机号的用户，根据id解封用户
     * @param id
     * @return
     */
    int NdealBlackUser(Long id);
}
